Multi-core processing in a wagering game machine

ABSTRACT

A computerized wagering game system includes a gaming module comprising gaming code which is operable when executed on to conduct a wagering game on which monetary value can be wagered, and a multi-core processor having multiple processor cores, the multiple processor cores each operable to execute any thread executing in the multi-core processor. In further embodiments, the multiple processor cores and an operating system facilitate symmetric multiprocessing, parallel processing, or hyperthreading.

RELATED APPLICATION

This application claims priority under 35 U.S.C. 119(e) from U.S. Provisional Application Ser. No. 60/694,831 filed Jun. 29, 2005, which application is incorporated herein by reference.

FIELD OF THE INVENTION

The invention relates generally to computerized wagering game machines, and more specifically to multi-core processing in a computerized wagering game machine.

LIMITED COPYRIGHT WAIVER

A portion of the disclosure of this patent document contains material to which the claim of copyright protection is made. The copyright owner has no objection to the facsimile reproduction by any person of the patent document or the patent disclosure, as it appears in the U.S. Patent and Trademark Office file or records, but reserves all other rights whatsoever. Copyright 2006, WMS Gaming, Inc.

BACKGROUND

Computerized wagering games have largely replaced traditional mechanical wagering game machines such as slot machines, and are rapidly being adopted to implement computerized versions of games that are traditionally played live such as poker and blackjack. These computerized games provide many benefits to the game owner and to the gambler, including greater reliability than can be achieved with a mechanical game or human dealer, more variety, sound, and animation in presentation of a game, and a lower overall cost of production and management.

The elements of computerized wagering game systems are in many ways the same as the elements in the mechanical and table game counterparts in that they must be fair, they must provide sufficient feedback to the game player to make the game fun to play, and they must meet a variety of gaming regulations to ensure that both the machine owner and gamer are honest and fairly treated in implementing the game. Further, they must provide a gaming experience that is at least as attractive as the older mechanical gaming machine experience to the gamer, to ensure success in a competitive gaming market.

Computerized wagering games do not rely on the dealer or other game players to facilitate game play and to provide an entertaining game playing environment, but rely upon the presentation of the game and environment generated by the wagering game machine itself. Incorporation of audio and video features into wagering games to present the wagering game, to provide help, and to enhance the environment presented are therefore important elements in the attractiveness and commercial success of a computerized wagering game system. It is not uncommon for audio voices to provide instruction and help, and to provide commentary on the wagering game being played. Music and environmental effects are also played through speakers in some wagering game systems to enhance or complement a theme of the wagering game. These sounds typically accompany video presentation of the wagering game on a screen, which itself often includes animation, video, and three-dimensional graphics as part of presentation of the wagering game.

This wide variety of functions the wagering game system controls and executes impose a significant demand on the wagering game system's processor, which not only executes the operating system and wagering game software, but also performs other tasks such as verifying the integrity of the nonvolatile storage from which software is loaded. The processor typically executes each of dozens of functions as a separate process, and these dozens of processes compete with one another for a share of the processor's time and capacity. Even single programs can be run as what are known as separate threads, tasks, or processes, in which each process is a distinct series of instructions to be executed in the processor. Because many processes are in process at the same time, the processor must switch between processes and manage the resources allocated to each process to make it appear as though every process is executing at the same time. But, each process is therefore only given a fraction of the processor's time, and its performance is dependent on the operation of other executing processes.

It is therefore desirable to execute the various processes in a wagering game system more efficiently.

SUMMARY

One example embodiment of the invention comprises a computerized wagering game system including a gaming module comprising a processor and gaming code which is operable when executed on the processor to conduct or present a wagering game on which monetary value can be wagered. The wagering game system includes a multi-core processor having multiple processor cores, the multiple processor cores each operable to execute any thread executing in the multi-core processor. In further embodiments, the multiple processor cores and an operating system facilitate symmetric multiprocessing, parallel processing, or hyperthreading.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 shows a computerized wagering game machine, as may be used to practice some example embodiments of the present invention.

FIG. 2 is a block diagram of a wagering game system having multiple processors, consistent with some example embodiments of the present invention.

FIG. 3 is a flowchart of a method of operating a wagering game system having multiple processors, consistent with some example embodiments of the present invention.

FIG. 4 is a block diagram of a video system within a wagering game employing multiple video processors, consistent with some example embodiments of the present invention.

FIG. 5 is a block diagram of a video system within a wagering game employing multiple video processing cores, consistent with some example embodiments of the present invention.

DETAILED DESCRIPTION

In the following detailed description of example embodiments of the invention, reference is made to specific examples by way of drawings and illustrations. These examples are described in sufficient detail to enable those skilled in the art to practice the invention, and serve to illustrate how the invention may be applied to various purposes or embodiments. Other embodiments of the invention exist and are within the scope of the invention, and logical, mechanical, electrical, and other changes may be made without departing from the subject or scope of the present invention. Features or limitations of various embodiments of the invention described herein, however essential to the example embodiments in which they are incorporated, do not limit the invention as a whole, and any reference to the invention, its elements, operation, and application do not limit the invention as a whole but serve only to define these example embodiments. The following detailed description does not, therefore, limit the scope of the invention, which is defined only by the appended claims.

One example embodiment of the invention seeks to improve execution of processes in a wagering game system by incorporating multiple processor cores into the wagering game system. This example comprises a computerized wagering game system including a gaming module comprising a processor and gaming code which is operable when executed on the processor to conduct or present a wagering game on which monetary value can be wagered. The example wagering game system also includes a multi-core processor having multiple processor cores, the multiple processor cores each operable to execute any thread executing in the multi-core processor. In further embodiments, the multiple processor cores and an operating system facilitate symmetric multiprocessing, parallel processing, or hyperthreading.

FIG. 1 illustrates a computerized wagering game machine, as may be used to practice some embodiments of the present invention. The computerized gaming system shown generally at 100 is a video wagering game system, which displays information for at least one wagering game upon which monetary value can be wagered on video display 101. Video display 101 is in various embodiments a CRT display, a plasma display, an LCD display, a surface conducting electron emitter display, or any other type of display suitable for displaying electronically provided display information. In some further embodiments, additional displays such as a bonus game display or top box display 102 are further operable to display electronically provided information to a wagering game player. Alternate embodiments of the invention will have other game indicators, such as mechanical reels instead of the video graphics reels shown at 103 that comprise a part of a video slot machine wagering game.

A wagering game is implemented using software within the wagering game, such as through instructions stored on a machine-readable medium such as a hard disk drive or nonvolatile memory. In some further example embodiments, some or all of the software stored in the wagering game machine is encrypted or is verified using a hash algorithm or encryption algorithm to ensure its authenticity and to verify that it has not been altered. For example, in one embodiment the wagering game software is loaded from nonvolatile memory in a compact flash card, and a hash value is calculated or a digital signature is derived to confirm that the data stored on the compact flash card has not been altered. The wagering game implemented via the loaded software takes various forms in different wagering game machines, including such well-known wagering games as reel slots, video poker, blackjack, craps, roulette, or hold 'em games. In some further embodiments, a secondary game or bonus game is displayed on the secondary display 102, or other information such as progressive slot information or other community game information is displayed.

The wagering game is played and controlled with inputs such as various buttons 104 or via a touchscreen overlay to video screen 101. The touchscreen is used in some embodiments to display virtual buttons, which can have unique functions in some embodiments, or can duplicate the functions provided by the mechanical buttons 104 in other embodiments. In some alternate examples, other devices such as virtual buttons 105 on the touchscreen display or a pull arm are employed to provide other input interfaces to the game player, such as to initiate reel spin. The player interface components are in this example contained within or mechanically coupled to the wagering game system, but in other embodiments will be located outside the wagering game system cabinet such as by a wired or wireless electronic connection to the wagering game system.

Monetary value is typically wagered on the outcome of the games, such as with tokens, coins, bills, or cards that hold monetary value. The wagered value is conveyed to the machine such as through a changer 106 or a secure user identification module interface 107, and winnings are returned such as via a returned value ticket, a stored value card, or through the coin tray 108. Sound is also provided through speakers 109, typically including audio indicators of game play, such as reel spins, credit bang-ups, and environmental or other sound effects or music to provide entertainment consistent with a theme of the computerized wagering game. In some further embodiments, the wagering game machine is coupled to a network, and is operable to use its network connection to receive wagering game data, track players and monetary value associated with a player, and to perform other such functions.

Operation of these various wagering game machine components, operation of the operating system and supervisory functions, and operation of the wagering game itself are controlled via software executing on one or more processors in the wagering game system. Various embodiments of the invention incorporate more than one processor, where each processor is operable to receive and execute instructions to perform the various functions necessary to operate a computerized wagering game machine.

The block diagram of FIG. 2 shows an example of a computerized wagering game system comprising a first processor 201 and a second processor 202. Both processors are coupled to one another via a bus, and in some embodiments are located on the same physical integrated circuit or in the same package 203. A bus couples the processors to memory 204, and to nonvolatile storage such as a hard disk drive 205 or nonvolatile memory. The bus also couples the processor to peripheral devices, such as a graphics interface and touchscreen display 206, an audio channel and speaker 207, and a network connection 208.

In operation, the operating system is loaded from the nonvolatile storage 205 into memory 204, and is executed or run on the processors 201 and 202. The processors each run a kernel, which is the core, fundamental process in an operating system. The kernel's primary function is to manage the execution of other processes, and to manage their access to hardware elements such as processor time and memory space. Once the operating system is loaded, the operating system facilitates loading other software applications or processes from nonvolatile storage into memory, and execution of the software in the processors 201 and 202.

The operating system is operable to manage which processes are assigned to which processor, or in some cases where a process is designed for parallel processing, coordinates execution of the same process on both processors to more efficiently complete a single process.

Parallel processes use synchronization techniques such as semaphores to ensure that the processors process data in order such that data needed in one processor is not changed by another processor while in use, or before it can be read. In addition to managing data dependencies, data is communicated between processes through use of shared memory space in memory 204, or through messaging between processors. These are but examples of some of the methods used to ensure proper execution of parallel processes in a multiprocessor system.

Symmetric multiprocessing is a term commonly used to describe a system in which two or more essentially identical processors are attached to the same memory, and are each operable to execute any process that is executable on another of the processors. It differs from parallel processing in that a single process is not executed on multiple processors, but is assigned to a single processor at a time for execution. Symmetric multiprocessing is supported in part by the operating system, which is able to manage which processes are assigned to which processors using a load balancing process so that no single processor is overworked while others remain idle.

In some symmetric multiprocessing embodiments of the invention, some of the processes are assigned to certain processors, to ensure a certain level of processor time availability or to avoid interfering with processes running on another processor. For example, consider a wagering game system such as that of FIG. 2 that is first turned on. In this example, the operating system is loaded, and a data verification process is run on the nonvolatile storage volume 205. In some further embodiments, data verification is run on multiple volumes to ensure that each volume has not been altered or tampered with since it was originally created and certified by gaming authorities as being fair and authentic for use in a wagering game machine. The verification process uses significant memory, nonvolatile storage, and processor resources, and can take from several minutes to twenty minutes or more.

The verification process in one example is executed on a dedicated processor running few if any other processes, so that it is able to use all the resources available to a processor. In other examples, the verification process for a single volume is spread across multiple processors such as by splitting up the volume such that each processor computes a hash value or verification value for a portion of the nonvolatile storage volume, or by executing the verification process as a parallel process. Still other embodiments include verification of multiple volumes using multiple processors, where one or more processors are used for each volume.

Once the volume has been verified as authentic, the wagering game software is loaded and executed such that the wagering game can be played. But, to ensure that the software is not tampered with or altered, a verification process continues to run even during game play, and typically takes up to 20 percent of a wagering game processor's time. In some embodiments of the invention, the verification process is run on a processor other than that on which the wagering game program is executing, so that the wagering game program's execution isn't limited or hindered by the background verification process.

In some further embodiments of the invention, one or more of the processors support hyperthreading, or another form of multithreading, in which multiple processors appear to be present as virtual processors to the operating system for a single physical processor. The physical processor has duplicates of certain architectural components used to track the execution state of a process or thread, but does not have a full second set of execution units able to conduct or execute instructions. If a process from one virtual process or set of architectural components tracking the execution state of the process is unable to execute for some period of time, such as while waiting for data to be loaded from memory or nonvolatile storage, the functional units can be used by the other virtual processor to continue execution of processes assigned to that virtual processor. Management of processes among virtual processes in such a multithreading or hyperthreading system is again managed by the operating system, which can perform load balancing or ensure that certain processes run on certain virtual processors.

FIG. 3 illustrates a more detailed example of execution of wagering game and related software on a multiprocessor system. At 301, the dual processor wagering game system is powered on, and completes a series of power-on self tests and starts the computerized portion of the system using the BIOS code. An operating system is loaded into memory from nonvolatile storage at 302, and the kernel is executed on each of the two processors. Other operating system processes, such as input/output processes and a load balancing process are also typically run, and are managed by a supervisory operating system process.

Once the operating system is loaded and the system has completed the “boot” process, other software such as driver software for peripheral devices is loaded. Next, the system launches a process on the first processor to calculate a hash value of the first volume to verify its integrity at 303. In various further embodiments, a second process is executed on the second processor to hash a second volume, or to hash a portion of the first volume while the first processor hashes the remaining portion of the first volume. In an alternate embodiment, the hash process executes as a parallel process across both processors.

Once the initial hash verification process is successfully complete, the wagering game system loads the gaming code and executes it on a first processor at 304. To ensure the integrity of the gaming code, a hash process executes continuously in the background on the second processor, so that the significant load this imposes on the second processor does not limit the performance of the wagering game process, such as by slowing down rendering of complex graphics or reducing the frame rate of animations or video.

Assignment of processes to specific processors varies in some embodiments in that assignment can either be handled dynamically such as via a load-balancing process, or can be assigned by pre-designation, such as where certain processes are assigned to certain processors to avoid interfering with one another. In this example, a load-balancing process at 305 is operable to determine which processes should be assigned to which processor to ensure that work is divided fairly between processor resources. The balance of work between processors in simplest form considers the amount of processor time consumed by various processes, and assigns processes such that each processor has approximately the same utilization rate. Changes in a process's time demand on a processor can result in reassignment of one or more processes, or can affect the assignment of new processes until the workload is essentially rebalanced. More sophisticated load balancing methods consider other factors, such as the degree to which one process depends on another process for data, or the priority or importance of certain processes.

Some processes may be assigned to a processor or may be assigned a higher priority on a given processor due to a higher need for processor resources. For example, a network communication or a background hash calculation can be delayed for a fraction of a second while video or graphics are being rendered, but a similar delay of a fraction of a second in rendering the video or graphics would cause a visible glitch in presentation of the wagering game and cause the game to appear to be operating poorly. Mutiprocessor wagering game machines can thereby use load balancing and prioritization to increase the processor time available in the wagering game system, and to improve the performance of high-priority processes.

FIG. 4 shows an example in which the multiple processors are video processors, and work together to render the same video image. In this example, a wagering game system bus 401 is coupled to a video processing system comprising both a first video processor 402 and a second video processor 403, which work together to render an image to be displayed on touchscreen display 404. In some embodiments, the processors are linked together via a technology such as NVIDIA's Scalable Link Interface (SLI), ATI's Crossfire, or another bus system facilitating cooperation between video processors or video cards to produce a single image. In this example, each video processor 402 and 403 is coupled directly to the video display 404 via its own video channel, such as via DVI or HDMI video interfaces.

This ability to use two independent processors to render video approximately doubles the speed at which video can be rendered, enabling significantly more complex renderings for video such as 3D graphics or animations, or for use in very high resolution displays. In some such embodiments, a single video card can be installed in a computer system initially, and a second video card can be added at a later point as an upgrade or installed as a factory option to provide enhanced video capability. Some examples require multiple video-specific slots for video cards in the wagering game system, such as multiple PCI express slots, along with a separate cable or circuit board link between the two video cards. Other examples use messages exchanged across the system bus or another bus to exchange data, or include multiple processors installed on the same video adapter. Further embodiments include use of more processors, such as four processor cores, or multiple video processors each having multiple processor cores, to render video for a single display.

FIG. 5 shows another example of using multiple video processor cores to produce a single video image, consistent with an embodiment of the invention. A system bus 501 is coupled to a video adapter 502 having a first video processing core 503 and a second video processing core 504, each of which are on the same video card. The work done by each processor in rendering a video image is combined on the video card, and a single video signal is sent from the video interface 502 to the video display 505. The display is in some embodiments a high resolution display, requiring significant processing power to render a relatively high number of pixels per refresh. In other embodiments, the complexity of the video image, such as a detailed rendering of a three-dimensional image, benefits from the availability of multiple video processors.

In some further embodiments, the concepts of FIGS. 4 and 5 are combined, such as where two separate video adapters are connected via a link such as SLI, where each video processor has multiple video processor cores. This may enable the use of a greater number of video processors in a single system, further increasing the graphics performance of the wagering game system. The video processors or video processing cores in some embodiments feature other processor features such as hyperthreading and multiple pipelines, as well as multiple instruction issue controllers and other such multiprocessing functions in a single processor or distributed across multiple processors.

In some further examples, the processors are special-purpose processors, such as video scalers, which perform certain functions such as scaling a video image at one resolution to be displayed on a display with another resolution. This is an example where the processors may be relatively simple in design and performance, but use of multiple processors permits scaling the ability of a single processor to meet the desired performance goal.

The examples presented here have shown a variety of ways in which multiprocessor wagering game systems can execute processes across multiple processors, thereby improving performance of the wagering game system. The added processor capacity enables more efficient operation of background tasks such as hashing nonvolatile storage or memory during game play, faster execution of tasks that can be divided between processors such as operating system tasks and startup hash verification, and enables dedication of greater processor resources to high priority processes such as rendering the wagering game display. Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement which is calculated to achieve the same purpose may be substituted for the specific embodiments shown. This application is intended to cover any adaptations or variations of the example embodiments of the invention described herein. It is intended that this invention be limited only by the claims, and the full scope of equivalents thereof. 

1. A computerized wagering game system, comprising: a gaming module comprising gaming code which is operable to present a wagering game on which monetary value can be wagered; and a multi-core processor having multiple processor cores, the multiple processor cores each operable to execute any thread executing in the multi-core processor.
 2. The computerized wagering game system of claim 1, wherein the multiple processor cores are contained in the same integrated circuit package.
 3. The computerized wagering game system of claim 1, wherein the multiple processor cores share the same memory, bus, and operating system.
 4. The computerized wagering game system of claim 1, wherein the multiple processor cores are configured in a symmetric multiprocessing configuration.
 5. The computerized wagering game system of claim 1, wherein two or more of the multiple processor cores are virtual processor hyperthreading cores, each of which is operable to appear to the operating system to be a logical processor.
 6. The computerized wagering game system of claim 1, further comprising an operating system operable to support symmetric multiprocessing.
 7. The computerized wagering game system or claim 1, wherein the multi-core processor comprises multiple video processor cores operable to render a single video image.
 8. A method of operating a computerized wagering game, comprising: presenting a wagering game on which monetary value can be wagered; and executing an operating system operable to support symmetric multiprocessing across more than one processor in the wagering game machine.
 9. The method of claim 8, further comprising emulating a hyperthreading processor as more than one logical processor in the executing operating system.
 10. The method of claim 8, further comprising load-balancing two or more processes executing across the more than one processor via a load balancing process.
 11. The method of claim 8, further comprising assigning specific processes to a specific processor from the more than one processor.
 12. The method of claim 8, further comprising executing a process across more than one of the more than one processors through parallel processing.
 13. The method of claim 8, wherein executing an operating system comprises executing the same operating system kernel on more than one of the more than one processors.
 14. The method of claim 8, further comprising operating two or more wagering games within the wagering game system, each wagering game executing on its own processor.
 15. The method of claim 8, further comprising assigning an authentication process to a first of the more than one processors and a wagering game program process to a processor other than the first processor.
 16. A method of operating a computerized wagering game, comprising: presenting a wagering game on which monetary value can be wagered; and rendering a video image using multiple video processing cores.
 17. A machine-readable medium with instructions stored thereon, the instructions when executed operable to cause a computerized system to: present a wagering game upon which monetary value can be wagered; and execute an operating system operable to support symmetric multiprocessing across two or more processors in the wagering game machine, such that processes can be assigned to more than one processor.
 18. The machine-readable medium of claim 17, the instructions when executed further operable to load balance executing processes between available processors.
 19. The machine-readable medium of claim 17, wherein assigning processes to more than one processor comprises assigning at least one process to a designated processor.
 20. The machine-readable medium of claim 17, wherein executing the operating system comprises executing the same operating system kernel on two or more processors.
 21. The machine-readable medium of claim 17, wherein the instructions when executed are further operable to load balance processes between the more than one processor.
 22. The machine-readable medium of claim 17, the instructions when executed further operable to implement an authentication process executed on an assigned first of the more than one processors, and further operable to implement a wagering game program process to a processor other than the first processor. 